<?php
/**
 * @file			userConfig.com.php
 * @CopyRight		(C)1996-2099 SINA Inc.
 * @Project			Xweibo
 * @Author			heli <heli1@staff.sina.com.cn>
 * @Create Date:	2010-07-08
 * @Modified By:	heli/2010-11-15
 * @Brief			用户自定义配置项管理类
 */

class userConfig_mod  extends modules_base {

	///初始值 
	/// user_newfeed		有新微博显现方式
	/// user_newmsg			有未读新信息的显现方式
	/// user_page_wb		微博显示的条数 
	/// user_page_comment	评论显示的条数
	/// user_skin			用户皮肤设置
	/// new_followers		是否有新粉丝
	/// index_listId		我的首页的List ID
	var $options = array(
						'user_newfeed' 		=>	'',
						'user_newmsg' 		=>	'',
						'user_newnotice'	=>	'1',
						'user_page_wb' 		=>	50,
						'user_page_comment' =>	20,
						'user_skin'			=>	'',
						'wap_font_size'		=>	'1',
						'wap_show_pic'		=>	'1',
						'wap_page_wb'		=>	'10',
						'new_followers'		=>	0,
						'index_listId'		=>  ''
						);	


	/**
	* 保存用户配置信息
	* 
	* @param mixed $kv	可以是数组或者字串,如果是数组,将忽略第二个参数
	* @param mixed $v	当第一个参数是字符串时有效
	* @param mixed $uid	指定更新用户的ID,默认为当前登录用户
	* @return 相应的适配器实例
	*/
	function set($kv, $v=null, $uid=false){
		$sina_uid 	= $uid ? $uid : USER::uid();
		$newCfg = $kv;
		if (!is_array($kv)){
			if (!isset($this->options[$kv])) {
				F::error('Set the user option does not exist'); exit;
			}
			$newCfg = array($kv=>$v);
		}
	   	
		$oldCfg	= $this->get(null, $sina_uid);
		
		$newCfg = array_merge($oldCfg, $newCfg);
		
		$db	  = APP::ADP('db');
		$sql = 'REPLACE ' . $db->getTable(T_USER_CONFIG) . '(`sina_uid`,`values`) VALUES' 
			. '("' . $db->escape($sina_uid) . '","' . $db->escape(json_encode($newCfg)) .'")';
		return $db->execute($sql);
	}
	
	/// 保存一个配置
	function _saveCfg($vArr, $sina_uid){
		
	}

	/**
	 * 获取用户自定义配置信息
	 *
	 * @param int $sina_uid
	 * @return bool|null
	 */
	function get($key = null, $sina_uid=false){
		$sina_uid	= $sina_uid===false ? USER::uid() : $sina_uid;
		$values		= $this->options; 
		if (!empty($sina_uid)) {
			$db = APP :: ADP('db');
			$row = $db->query('SELECT * FROM ' . $db->getTable(T_USER_CONFIG) . ' WHERE sina_uid = '.$sina_uid);
			$values = array();
			if (!empty($row)) {
				$values = json_decode($row[0]['values'], true);
			} 
			
			if (empty($values) || !is_array($values)){
				$values = $this->options;
			}
		}

		return $key ? (isset($values[$key]) ? $values[$key] : null) : $values;
	}
}